Network Address Translators (NAT) causes well-known difficulties for peer-to-peer (P2P) communication since the peers involved in the network may not have a globally valid IP (Internet Protocol) address at which they are reachable. In particular, current Internet address architecture consists of a global address space (i.e., public IP addresses) and many private address spaces (i.e., private IP addresses) multiplexed to a single public IP address by NATs. Only peers (also termed nodes, clients, etc.) in the global address space can be easily contacted from anywhere in the network because they have unique, globally routable IP addresses. Peers on private sub-networks can connect to other peers on the same private sub-network and they can usually open TCP (Transmission Control Protocol) or UDP (User Datagram Protocol) connections to established peers in the global address space. However, since peers on a private sub-network are multiplexed to a smaller number of public IP addresses, it is difficult for two peers on different private sub-networks to contact each other directly as a NAT receiving an incoming message may be unaware of the peer for which the message is destined. In particular, NATs allocate temporary public endpoints for outgoing connections and translate the addresses and port numbers in packets comprising those sessions, while generally blocking all incoming traffic unless otherwise configured.
Many techniques have been proposed to overcome the direct peer-to-peer communication difficulties but are not typically universally applicable since NAT behavior is not standardized. Some techniques require a public server at a known globally reachable IP address which aids two peers in establishing a direct connection. Other solutions involve relaying all data through a server, which adds bandwidth costs and increases latency detrimental to conversational VoIP (Voice over IP) applications for example. Other NAT behavior-based solutions fail to preserve enterprise security policies and break end-to-end transparency.
P2P overlay networks are virtual networks that may incorporate peers on multiple sub-networks, each of which may be protected by a NAT (e.g. a multiple site corporate LAN). If a peer wishes to join an existing P2P overlay network it locates and contacts one or more peers in the overlay and then exchanges messages with these peers. This process can be complicated by the presence of NATs separating the sub-networks in the overlay.